// SPDX-License-Identifier: MIT
// Copyright (C) 2018-present iced project and contributors

using Generator.Enums;
using Generator.Enums.Decoder;

namespace Generator.Decoder {
	static class DecoderTable_VEX {
		public const string Handlers_0F38 = nameof(Handlers_0F38);
		public const string Handlers_0F3A = nameof(Handlers_0F3A);
		public const string Handlers_MAP0 = nameof(Handlers_MAP0);
		public const string Handlers_0F = nameof(Handlers_0F);

		public static (string name, object?[] handlers)[] CreateHandlers(GenTypes genTypes) {
			var kind = genTypes[TypeIds.VexOpCodeHandlerKind];
			var reg = genTypes[TypeIds.Register];
			var code = genTypes[TypeIds.Code];
			var options = genTypes[TypeIds.DecoderOptions];

			var Bitness_DontReadModRM = kind[nameof(VexOpCodeHandlerKind.Bitness_DontReadModRM)];
			var RM = kind[nameof(VexOpCodeHandlerKind.RM)];
			var Group = kind[nameof(VexOpCodeHandlerKind.Group)];
			var W = kind[nameof(VexOpCodeHandlerKind.W)];
			var MandatoryPrefix2_4 = kind[nameof(VexOpCodeHandlerKind.MandatoryPrefix2_4)];
			var MandatoryPrefix2_NoModRM = kind[nameof(VexOpCodeHandlerKind.MandatoryPrefix2_NoModRM)];
			var VectorLength_NoModRM = kind[nameof(VexOpCodeHandlerKind.VectorLength_NoModRM)];
			var VectorLength = kind[nameof(VexOpCodeHandlerKind.VectorLength)];
			var Ed_V_Ib = kind[nameof(VexOpCodeHandlerKind.Ed_V_Ib)];
			var Ev_VX = kind[nameof(VexOpCodeHandlerKind.Ev_VX)];
			var G_VK = kind[nameof(VexOpCodeHandlerKind.G_VK)];
			var Gv_Ev_Gv = kind[nameof(VexOpCodeHandlerKind.Gv_Ev_Gv)];
			var Gv_Ev_Ib = kind[nameof(VexOpCodeHandlerKind.Gv_Ev_Ib)];
			var Gv_GPR_Ib = kind[nameof(VexOpCodeHandlerKind.Gv_GPR_Ib)];
			var Gv_Gv_Ev = kind[nameof(VexOpCodeHandlerKind.Gv_Gv_Ev)];
			var Gv_RX = kind[nameof(VexOpCodeHandlerKind.Gv_RX)];
			var Gv_W = kind[nameof(VexOpCodeHandlerKind.Gv_W)];
			var GvM_VX_Ib = kind[nameof(VexOpCodeHandlerKind.GvM_VX_Ib)];
			var HRIb = kind[nameof(VexOpCodeHandlerKind.HRIb)];
			var Hv_Ev = kind[nameof(VexOpCodeHandlerKind.Hv_Ev)];
			var M = kind[nameof(VexOpCodeHandlerKind.M)];
			var MHV = kind[nameof(VexOpCodeHandlerKind.MHV)];
			var M_VK = kind[nameof(VexOpCodeHandlerKind.M_VK)];
			var MV = kind[nameof(VexOpCodeHandlerKind.MV)];
			var rDI_VX_RX = kind[nameof(VexOpCodeHandlerKind.rDI_VX_RX)];
			var Simple = kind[nameof(VexOpCodeHandlerKind.Simple)];
			var VHEv = kind[nameof(VexOpCodeHandlerKind.VHEv)];
			var VHEvIb = kind[nameof(VexOpCodeHandlerKind.VHEvIb)];
			var VHIs4W = kind[nameof(VexOpCodeHandlerKind.VHIs4W)];
			var VHIs5W = kind[nameof(VexOpCodeHandlerKind.VHIs5W)];
			var VHM = kind[nameof(VexOpCodeHandlerKind.VHM)];
			var VHW_2 = kind[nameof(VexOpCodeHandlerKind.VHW_2)];
			var VHW_3 = kind[nameof(VexOpCodeHandlerKind.VHW_3)];
			var VHW_4 = kind[nameof(VexOpCodeHandlerKind.VHW_4)];
			var VHWIb_2 = kind[nameof(VexOpCodeHandlerKind.VHWIb_2)];
			var VHWIb_4 = kind[nameof(VexOpCodeHandlerKind.VHWIb_4)];
			var VHWIs4 = kind[nameof(VexOpCodeHandlerKind.VHWIs4)];
			var VHWIs5 = kind[nameof(VexOpCodeHandlerKind.VHWIs5)];
			var VK_HK_RK = kind[nameof(VexOpCodeHandlerKind.VK_HK_RK)];
			var VK_R = kind[nameof(VexOpCodeHandlerKind.VK_R)];
			var VK_RK = kind[nameof(VexOpCodeHandlerKind.VK_RK)];
			var VK_RK_Ib = kind[nameof(VexOpCodeHandlerKind.VK_RK_Ib)];
			var VK_WK = kind[nameof(VexOpCodeHandlerKind.VK_WK)];
			var VM = kind[nameof(VexOpCodeHandlerKind.VM)];
			var VW_2 = kind[nameof(VexOpCodeHandlerKind.VW_2)];
			var VW_3 = kind[nameof(VexOpCodeHandlerKind.VW_3)];
			var VWIb_2 = kind[nameof(VexOpCodeHandlerKind.VWIb_2)];
			var VWIb_3 = kind[nameof(VexOpCodeHandlerKind.VWIb_3)];
			var VX_Ev = kind[nameof(VexOpCodeHandlerKind.VX_Ev)];
			var VX_VSIB_HX = kind[nameof(VexOpCodeHandlerKind.VX_VSIB_HX)];
			var WHV = kind[nameof(VexOpCodeHandlerKind.WHV)];
			var WV = kind[nameof(VexOpCodeHandlerKind.WV)];
			var WVIb = kind[nameof(VexOpCodeHandlerKind.WVIb)];
			var VT_SIBMEM = kind[nameof(VexOpCodeHandlerKind.VT_SIBMEM)];
			var SIBMEM_VT = kind[nameof(VexOpCodeHandlerKind.SIBMEM_VT)];
			var VT = kind[nameof(VexOpCodeHandlerKind.VT)];
			var VT_RT_HT = kind[nameof(VexOpCodeHandlerKind.VT_RT_HT)];
			var Options_DontReadModRM = kind[nameof(VexOpCodeHandlerKind.Options_DontReadModRM)];
			var Gq_HK_RK = kind[nameof(VexOpCodeHandlerKind.Gq_HK_RK)];
			var VK_R_Ib = kind[nameof(VexOpCodeHandlerKind.VK_R_Ib)];
			var Gv_Ev = kind[nameof(VexOpCodeHandlerKind.Gv_Ev)];
			var Ev = kind[nameof(VexOpCodeHandlerKind.Ev)];
			var K_Jb = kind[nameof(VexOpCodeHandlerKind.K_Jb)];
			var K_Jz = kind[nameof(VexOpCodeHandlerKind.K_Jz)];

			var eax = reg[nameof(Register.EAX)];
			var rax = reg[nameof(Register.RAX)];
			var xmm0 = reg[nameof(Register.XMM0)];
			var ymm0 = reg[nameof(Register.YMM0)];

			var invalid = new object[] { kind[nameof(VexOpCodeHandlerKind.Invalid)] };
			var invalid_NoModRM = new object[] { kind[nameof(VexOpCodeHandlerKind.Invalid_NoModRM)] };
			var handlers = new (string name, object?[] handlers)[] {
				("handlers_Grp_0F18",
				new object[8] {
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetchnta_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetch0_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetch1_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetch2_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetchenta_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetche0_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetche1_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Vprefetche2_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
				}),

				("handlers_Grp_0F71",
				new object[8] {
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsrlw_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsrlw_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsraw_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsraw_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsllw_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsllw_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
				}),

				("handlers_Grp_0F72",
				new object[8] {
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsrld_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsrld_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsrad_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsrad_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpslld_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpslld_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
				}),

				("handlers_Grp_0F73",
				new object[8] {
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsrlq_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsrlq_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsrldq_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsrldq_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpsllq_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpsllq_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { HRIb, xmm0, code[nameof(Code.VEX_Vpslldq_xmm_xmm_imm8)] },
							new object[] { HRIb, ymm0, code[nameof(Code.VEX_Vpslldq_ymm_ymm_imm8)] },
						},
						invalid,
						invalid,
					},
				}),

				("handlers_Grp_0FAE",
				new object[8] {
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { M, code[nameof(Code.VEX_Vldmxcsr_m32)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { M, code[nameof(Code.VEX_Vstmxcsr_m32)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { RM,
										new object[] { Ev, code[nameof(Code.VEX_KNC_Delay_r32)], code[nameof(Code.VEX_KNC_Delay_r64)] },
										invalid,
									},
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { RM,
										new object[] { Ev, code[nameof(Code.VEX_KNC_Spflt_r32)], code[nameof(Code.VEX_KNC_Spflt_r64)] },
										invalid,
									},
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Clevict1_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { M, code[nameof(Code.VEX_KNC_Clevict0_m8)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
					},
				}),

				("handlers_Grp_0F38F3",
				new object[8] {
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Hv_Ev, code[nameof(Code.VEX_Blsr_r32_rm32)], code[nameof(Code.VEX_Blsr_r64_rm64)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Hv_Ev, code[nameof(Code.VEX_Blsmsk_r32_rm32)], code[nameof(Code.VEX_Blsmsk_r64_rm64)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Hv_Ev, code[nameof(Code.VEX_Blsi_r32_rm32)], code[nameof(Code.VEX_Blsi_r64_rm64)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				("handlers_Grp_128_NP_0F38_W0_49_lo",
				new object[8] {
					new object[] { RM,
						invalid,
						new object[] { M, code[nameof(Code.VEX_Ldtilecfg_m512)] },
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				("handlers_Grp_128_NP_0F38_W0_49_hi",
				new object?[0x40] {
					// C0
					new object[] { Simple, code[nameof(Code.VEX_Tilerelease)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// C8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// D0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// D8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// E0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// E8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// F0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// F8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
				}),

				("handlers_Grp_128_66_0F38_W0_49_lo",
				new object[8] {
					new object[] { RM,
						invalid,
						new object[] { M, code[nameof(Code.VEX_Sttilecfg_m512)] },
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				("handlers_Grp_128_66_0F38_W0_49_hi",
				new object?[0x40] {
					// C0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// C8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// D0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// D8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// E0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// E8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// F0
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// F8
					null,
					null,
					null,
					null,
					null,
					null,
					null,
					null,
				}),

				("handlers_Grp_128_F2_0F38_W0_49_lo",
				new object[8] {
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				("handlers_Grp_128_F2_0F38_W0_49_hi",
				new object?[0x40] {
					// C0
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// C8
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// D0
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// D8
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// E0
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// E8
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// F0
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,

					// F8
					new object[] { VT, code[nameof(Code.VEX_Tilezero_tmm)] },
					null,
					null,
					null,
					null,
					null,
					null,
					null,
				}),

				(Handlers_0F38,
				new object[0x100] {
					// 00
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpshufb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpshufb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vphaddw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vphaddw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vphaddd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vphaddd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vphaddsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vphaddsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaddubsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaddubsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vphsubw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vphsubw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vphsubd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vphsubd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vphsubsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vphsubsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// 08
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsignb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsignb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsignw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsignw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsignd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsignd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmulhrsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmulhrsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpermilps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpermilps_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpermilpd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpermilpd_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vtestps_xmm_xmmm128)] },
								new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vtestps_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vtestpd_xmm_xmmm128)] },
								new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vtestpd_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},

					// 10
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vcvtph2ps_xmm_xmmm64)] },
								new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vcvtph2ps_ymm_xmmm128)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpermps_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vptest_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vptest_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// 18
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { RM,
									new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vbroadcastss_xmm_xmm)] },
									new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vbroadcastss_xmm_m32)] },
								},
								new object[] { RM,
									new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vbroadcastss_ymm_xmm)] },
									new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vbroadcastss_ymm_m32)] },
								},
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { RM,
									new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vbroadcastsd_ymm_xmm)] },
									new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vbroadcastsd_ymm_m64)] },
								},
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VM, ymm0, code[nameof(Code.VEX_Vbroadcastf128_ymm_m128)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vpabsb_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vpabsb_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vpabsw_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vpabsw_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vpabsd_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vpabsd_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					invalid,

					// 20
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovsxbw_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovsxbw_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovsxbd_xmm_xmmm32)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovsxbd_ymm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovsxbq_xmm_xmmm16)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovsxbq_ymm_xmmm32)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovsxwd_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovsxwd_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovsxwq_xmm_xmmm32)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovsxwq_ymm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovsxdq_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovsxdq_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,

					// 28
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmuldq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmuldq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpeqq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpeqq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VM, xmm0, code[nameof(Code.VEX_Vmovntdqa_xmm_m128)] },
							new object[] { VM, ymm0, code[nameof(Code.VEX_Vmovntdqa_ymm_m256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpackusdw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpackusdw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHM, xmm0, code[nameof(Code.VEX_Vmaskmovps_xmm_xmm_m128)] },
								new object[] { VHM, ymm0, code[nameof(Code.VEX_Vmaskmovps_ymm_ymm_m256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHM, xmm0, code[nameof(Code.VEX_Vmaskmovpd_xmm_xmm_m128)] },
								new object[] { VHM, ymm0, code[nameof(Code.VEX_Vmaskmovpd_ymm_ymm_m256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { MHV, xmm0, code[nameof(Code.VEX_Vmaskmovps_m128_xmm_xmm)] },
								new object[] { MHV, ymm0, code[nameof(Code.VEX_Vmaskmovps_m256_ymm_ymm)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { MHV, xmm0, code[nameof(Code.VEX_Vmaskmovpd_m128_xmm_xmm)] },
								new object[] { MHV, ymm0, code[nameof(Code.VEX_Vmaskmovpd_m256_ymm_ymm)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},

					// 30
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovzxbw_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovzxbw_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovzxbd_xmm_xmmm32)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovzxbd_ymm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovzxbq_xmm_xmmm16)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovzxbq_ymm_xmmm32)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovzxwd_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovzxwd_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovzxwq_xmm_xmmm32)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovzxwq_ymm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpmovzxdq_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpmovzxdq_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpermd_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpgtq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpgtq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// 38
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpminsb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpminsb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpminsd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpminsd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpminuw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpminuw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpminud_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpminud_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaxsb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaxsb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaxsd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaxsd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaxuw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaxuw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaxud_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaxud_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// 40
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmulld_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmulld_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vphminposuw_xmm_xmmm128)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsrlvd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsrlvd_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsrlvq_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsrlvq_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsravd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsravd_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsllvd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsllvd_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsllvq_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsllvq_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},

					// 48
					invalid,
					new object[] { kind[nameof(LegacyOpCodeHandlerKind.Bitness)],
						invalid,
						new object[] { MandatoryPrefix2_4,
							new object[] { W,
								new object[] { VectorLength,
									new object[] { kind[nameof(LegacyOpCodeHandlerKind.Group8x64)], "handlers_Grp_128_NP_0F38_W0_49_lo", "handlers_Grp_128_NP_0F38_W0_49_hi" },
									invalid,
								},
								invalid,
							},
							new object[] { W,
								new object[] { VectorLength,
									new object[] { kind[nameof(LegacyOpCodeHandlerKind.Group8x64)], "handlers_Grp_128_66_0F38_W0_49_lo", "handlers_Grp_128_66_0F38_W0_49_hi" },
									invalid,
								},
								invalid,
							},
							invalid,
							new object[] { W,
								new object[] { VectorLength,
									new object[] { kind[nameof(LegacyOpCodeHandlerKind.Group8x64)], "handlers_Grp_128_F2_0F38_W0_49_lo", "handlers_Grp_128_F2_0F38_W0_49_hi" },
									invalid,
								},
								invalid,
							},
						},
					},
					invalid,
					new object[] { kind[nameof(LegacyOpCodeHandlerKind.Bitness)],
						invalid,
						new object[] { MandatoryPrefix2_4,
							invalid,
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										invalid,
										new object[] { VT_SIBMEM, code[nameof(Code.VEX_Tileloaddt1_tmm_sibmem)] },
									},
									invalid,
								},
								invalid,
							},
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										invalid,
										new object[] { SIBMEM_VT, code[nameof(Code.VEX_Tilestored_sibmem_tmm)] },
									},
									invalid,
								},
								invalid,
							},
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										invalid,
										new object[] { VT_SIBMEM, code[nameof(Code.VEX_Tileloadd_tmm_sibmem)] },
									},
									invalid,
								},
								invalid,
							},
						},
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 50
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpdpbusd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpdpbusd_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpdpbusds_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpdpbusds_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpdpwssd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpdpwssd_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpdpwssds_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpdpwssds_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 58
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpbroadcastd_xmm_xmmm32)] },
								new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpbroadcastd_ymm_xmmm32)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpbroadcastq_xmm_xmmm64)] },
								new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpbroadcastq_ymm_xmmm64)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VM, ymm0, code[nameof(Code.VEX_Vbroadcasti128_ymm_m128)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { kind[nameof(LegacyOpCodeHandlerKind.Bitness)],
						invalid,
						new object[] { MandatoryPrefix2_4,
							invalid,
							invalid,
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										new object[] { VT_RT_HT, code[nameof(Code.VEX_Tdpbf16ps_tmm_tmm_tmm)] },
										invalid,
									},
									invalid,
								},
								invalid,
							},
							invalid,
						},
					},
					invalid,
					new object[] { kind[nameof(LegacyOpCodeHandlerKind.Bitness)],
						invalid,
						new object[] { MandatoryPrefix2_4,
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										new object[] { VT_RT_HT, code[nameof(Code.VEX_Tdpbuud_tmm_tmm_tmm)] },
										invalid,
									},
									invalid,
								},
								invalid,
							},
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										new object[] { VT_RT_HT, code[nameof(Code.VEX_Tdpbusd_tmm_tmm_tmm)] },
										invalid,
									},
									invalid,
								},
								invalid,
							},
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										new object[] { VT_RT_HT, code[nameof(Code.VEX_Tdpbsud_tmm_tmm_tmm)] },
										invalid,
									},
									invalid,
								},
								invalid,
							},
							new object[] { W,
								new object[] { VectorLength,
									new object[] { RM,
										new object[] { VT_RT_HT, code[nameof(Code.VEX_Tdpbssd_tmm_tmm_tmm)] },
										invalid,
									},
									invalid,
								},
								invalid,
							},
						},
					},
					invalid,

					// 60
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 68
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 70
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 78
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpbroadcastb_xmm_xmmm8)] },
								new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpbroadcastb_ymm_xmmm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VW_3, xmm0, xmm0, code[nameof(Code.VEX_Vpbroadcastw_xmm_xmmm16)] },
								new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vpbroadcastw_ymm_xmmm16)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHM, xmm0, code[nameof(Code.VEX_Vpmaskmovd_xmm_xmm_m128)] },
								new object[] { VHM, ymm0, code[nameof(Code.VEX_Vpmaskmovd_ymm_ymm_m256)] },
							},
							new object[] { VectorLength,
								new object[] { VHM, xmm0, code[nameof(Code.VEX_Vpmaskmovq_xmm_xmm_m128)] },
								new object[] { VHM, ymm0, code[nameof(Code.VEX_Vpmaskmovq_ymm_ymm_m256)] },
							},
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { MHV, xmm0, code[nameof(Code.VEX_Vpmaskmovd_m128_xmm_xmm)] },
								new object[] { MHV, ymm0, code[nameof(Code.VEX_Vpmaskmovd_m256_ymm_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { MHV, xmm0, code[nameof(Code.VEX_Vpmaskmovq_m128_xmm_xmm)] },
								new object[] { MHV, ymm0, code[nameof(Code.VEX_Vpmaskmovq_m256_ymm_ymm)] },
							},
						},
						invalid,
						invalid,
					},
					invalid,

					// 90
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpgatherdd_xmm_vm32x_xmm)] },
								new object[] { VX_VSIB_HX, ymm0, ymm0, ymm0, code[nameof(Code.VEX_Vpgatherdd_ymm_vm32y_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpgatherdq_xmm_vm32x_xmm)] },
								new object[] { VX_VSIB_HX, ymm0, xmm0, ymm0, code[nameof(Code.VEX_Vpgatherdq_ymm_vm32x_ymm)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpgatherqd_xmm_vm64x_xmm)] },
								new object[] { VX_VSIB_HX, xmm0, ymm0, xmm0, code[nameof(Code.VEX_Vpgatherqd_xmm_vm64y_xmm)] },
							},
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpgatherqq_xmm_vm64x_xmm)] },
								new object[] { VX_VSIB_HX, ymm0, ymm0, ymm0, code[nameof(Code.VEX_Vpgatherqq_ymm_vm64y_ymm)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vgatherdps_xmm_vm32x_xmm)] },
								new object[] { VX_VSIB_HX, ymm0, ymm0, ymm0, code[nameof(Code.VEX_Vgatherdps_ymm_vm32y_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vgatherdpd_xmm_vm32x_xmm)] },
								new object[] { VX_VSIB_HX, ymm0, xmm0, ymm0, code[nameof(Code.VEX_Vgatherdpd_ymm_vm32x_ymm)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vgatherqps_xmm_vm64x_xmm)] },
								new object[] { VX_VSIB_HX, xmm0, ymm0, xmm0, code[nameof(Code.VEX_Vgatherqps_xmm_vm64y_xmm)] },
							},
							new object[] { VectorLength,
								new object[] { VX_VSIB_HX, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vgatherqpd_xmm_vm64x_xmm)] },
								new object[] { VX_VSIB_HX, ymm0, ymm0, ymm0, code[nameof(Code.VEX_Vgatherqpd_ymm_vm64y_ymm)] },
							},
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmaddsub132ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmaddsub132ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmaddsub132pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmaddsub132pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsubadd132ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsubadd132ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsubadd132pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsubadd132pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},

					// 98
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd132ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmadd132ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd132pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmadd132pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd132ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd132sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub132ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsub132ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub132pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsub132pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub132ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub132sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd132ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmadd132ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd132pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmadd132pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd132ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd132sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub132ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmsub132ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub132pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmsub132pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub132ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub132sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},

					// A0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmaddsub213ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmaddsub213ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmaddsub213pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmaddsub213pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsubadd213ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsubadd213ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsubadd213pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsubadd213pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},

					// A8
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd213ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmadd213ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd213pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmadd213pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd213ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd213sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub213ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsub213ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub213pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsub213pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub213ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub213sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd213ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmadd213ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd213pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmadd213pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd213ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd213sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub213ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmsub213ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub213pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmsub213pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub213ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub213sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},

					// B0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmaddsub231ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmaddsub231ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmaddsub231pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmaddsub231pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsubadd231ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsubadd231ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsubadd231pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsubadd231pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},

					// B8
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd231ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmadd231ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd231pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmadd231pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd231ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmadd231sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub231ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsub231ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub231pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfmsub231pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub231ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfmsub231sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd231ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmadd231ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd231pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmadd231pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd231ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmadd231sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub231ps_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmsub231ps_ymm_ymm_ymmm256)] },
							},
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub231pd_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vfnmsub231pd_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub231ss_xmm_xmm_xmmm32)] },
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vfnmsub231sd_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},

					// C0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vgf2p8mulb_xmm_xmm_xmmm128)] },
								new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vgf2p8mulb_ymm_ymm_ymmm256)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},

					// D0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D8
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vaesimc_xmm_xmmm128)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaesenc_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaesenc_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaesenclast_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaesenclast_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaesdec_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaesdec_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaesdeclast_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaesdeclast_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// E0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F0
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Undoc_r32_rm32_128_F3_0F38_W0_F0)], code[nameof(Code.VEX_KNC_Undoc_r64_rm64_128_F3_0F38_W1_F0)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Undoc_r32_rm32_128_F2_0F38_W0_F0)], code[nameof(Code.VEX_KNC_Undoc_r64_rm64_128_F2_0F38_W1_F0)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Undoc_r32_rm32_128_F2_0F38_W0_F1)], code[nameof(Code.VEX_KNC_Undoc_r64_rm64_128_F2_0F38_W1_F1)] },
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Gv_Gv_Ev, code[nameof(Code.VEX_Andn_r32_r32_rm32)], code[nameof(Code.VEX_Andn_r64_r64_rm64)] },
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { Group, "handlers_Grp_0F38F3" },
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Gv_Ev_Gv, code[nameof(Code.VEX_Bzhi_r32_rm32_r32)], code[nameof(Code.VEX_Bzhi_r64_rm64_r64)] },
							invalid,
						},
						invalid,
						new object[] { VectorLength,
							new object[] { Gv_Gv_Ev, code[nameof(Code.VEX_Pext_r32_r32_rm32)], code[nameof(Code.VEX_Pext_r64_r64_rm64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Gv_Gv_Ev, code[nameof(Code.VEX_Pdep_r32_r32_rm32)], code[nameof(Code.VEX_Pdep_r64_r64_rm64)] },
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Gv_Gv_Ev, code[nameof(Code.VEX_Mulx_r32_r32_rm32)], code[nameof(Code.VEX_Mulx_r64_r64_rm64)] },
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Gv_Ev_Gv, code[nameof(Code.VEX_Bextr_r32_rm32_r32)], code[nameof(Code.VEX_Bextr_r64_rm64_r64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Gv_Ev_Gv, code[nameof(Code.VEX_Shlx_r32_rm32_r32)], code[nameof(Code.VEX_Shlx_r64_rm64_r64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Gv_Ev_Gv, code[nameof(Code.VEX_Sarx_r32_rm32_r32)], code[nameof(Code.VEX_Sarx_r64_rm64_r64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Gv_Ev_Gv, code[nameof(Code.VEX_Shrx_r32_rm32_r32)], code[nameof(Code.VEX_Shrx_r64_rm64_r64)] },
							invalid,
						},
					},

					// F8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				(Handlers_0F3A,
				new object[0x100] {
					// 00
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							invalid,
							new object[] { VectorLength,
								invalid,
								new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpermq_ymm_ymmm256_imm8)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							invalid,
							new object[] { VectorLength,
								invalid,
								new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpermpd_ymm_ymmm256_imm8)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vpblendd_xmm_xmm_xmmm128_imm8)] },
								new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vpblendd_ymm_ymm_ymmm256_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpermilps_xmm_xmmm128_imm8)] },
								new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpermilps_ymm_ymmm256_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpermilpd_xmm_xmmm128_imm8)] },
								new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpermilpd_ymm_ymmm256_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vperm2f128_ymm_ymm_ymmm256_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,

					// 08
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vroundps_xmm_xmmm128_imm8)] },
							new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vroundps_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vroundpd_xmm_xmmm128_imm8)] },
							new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vroundpd_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vroundss_xmm_xmm_xmmm32_imm8)] },
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vroundsd_xmm_xmm_xmmm64_imm8)] },
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vblendps_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vblendps_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vblendpd_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vblendpd_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vpblendw_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vpblendw_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vpalignr_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vpalignr_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},

					// 10
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { GvM_VX_Ib, xmm0, code[nameof(Code.VEX_Vpextrb_r32m8_xmm_imm8)], code[nameof(Code.VEX_Vpextrb_r64m8_xmm_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { GvM_VX_Ib, xmm0, code[nameof(Code.VEX_Vpextrw_r32m16_xmm_imm8)], code[nameof(Code.VEX_Vpextrw_r64m16_xmm_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { GvM_VX_Ib, xmm0, code[nameof(Code.VEX_Vpextrd_rm32_xmm_imm8)], code[nameof(Code.VEX_Vpextrq_rm64_xmm_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { Ed_V_Ib, xmm0, code[nameof(Code.VEX_Vextractps_rm32_xmm_imm8)], code[nameof(Code.VEX_Vextractps_r64m32_xmm_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 18
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VHWIb_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vinsertf128_ymm_ymm_xmmm128_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { WVIb, xmm0, ymm0, code[nameof(Code.VEX_Vextractf128_xmmm128_ymm_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { WVIb, xmm0, xmm0, code[nameof(Code.VEX_Vcvtps2ph_xmmm64_xmm_imm8)] },
								new object[] { WVIb, xmm0, ymm0, code[nameof(Code.VEX_Vcvtps2ph_xmmm128_ymm_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,

					// 20
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHEvIb, xmm0, code[nameof(Code.VEX_Vpinsrb_xmm_xmm_r32m8_imm8)], code[nameof(Code.VEX_Vpinsrb_xmm_xmm_r64m8_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vinsertps_xmm_xmm_xmmm32_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHEvIb, xmm0, code[nameof(Code.VEX_Vpinsrd_xmm_xmm_rm32_imm8)], code[nameof(Code.VEX_Vpinsrq_xmm_xmm_rm64_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 28
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 30
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftrb_kr_kr_imm8)] },
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftrw_kr_kr_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftrd_kr_kr_imm8)] },
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftrq_kr_kr_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftlb_kr_kr_imm8)] },
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftlw_kr_kr_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftld_kr_kr_imm8)] },
								new object[] { VK_RK_Ib, code[nameof(Code.VEX_Kshiftlq_kr_kr_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 38
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VHWIb_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vinserti128_ymm_ymm_xmmm128_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { WVIb, xmm0, ymm0, code[nameof(Code.VEX_Vextracti128_xmmm128_ymm_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_R_Ib, code[nameof(Code.VEX_KNC_Kextract_kr_r64_imm8)], rax },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,

					// 40
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vdpps_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vdpps_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vdppd_xmm_xmm_xmmm128_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vmpsadbw_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vmpsadbw_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vpclmulqdq_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vpclmulqdq_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								invalid,
								new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vperm2i128_ymm_ymm_ymmm256_imm8)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,

					// 48
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs5, xmm0, code[nameof(Code.VEX_Vpermil2ps_xmm_xmm_xmmm128_xmm_imm4)] },
								new object[] { VHWIs5, ymm0, code[nameof(Code.VEX_Vpermil2ps_ymm_ymm_ymmm256_ymm_imm4)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs5W, xmm0, code[nameof(Code.VEX_Vpermil2ps_xmm_xmm_xmm_xmmm128_imm4)] },
								new object[] { VHIs5W, ymm0, code[nameof(Code.VEX_Vpermil2ps_ymm_ymm_ymm_ymmm256_imm4)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs5, xmm0, code[nameof(Code.VEX_Vpermil2pd_xmm_xmm_xmmm128_xmm_imm4)] },
								new object[] { VHWIs5, ymm0, code[nameof(Code.VEX_Vpermil2pd_ymm_ymm_ymmm256_ymm_imm4)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs5W, xmm0, code[nameof(Code.VEX_Vpermil2pd_xmm_xmm_xmm_xmmm128_imm4)] },
								new object[] { VHIs5W, ymm0, code[nameof(Code.VEX_Vpermil2pd_ymm_ymm_ymm_ymmm256_imm4)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vblendvps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vblendvps_ymm_ymm_ymmm256_ymm)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vblendvpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vblendvpd_ymm_ymm_ymmm256_ymm)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vpblendvb_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vpblendvb_ymm_ymm_ymmm256_ymm)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,

					// 50
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 58
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmaddsubps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmaddsubps_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmaddsubps_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmaddsubps_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmaddsubpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmaddsubpd_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmaddsubpd_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmaddsubpd_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmsubaddps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmsubaddps_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmsubaddps_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmsubaddps_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmsubaddpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmsubaddpd_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmsubaddpd_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmsubaddpd_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},

					// 60
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_3, xmm0, code[nameof(Code.VEX_Vpcmpestrm_xmm_xmmm128_imm8)], code[nameof(Code.VEX_Vpcmpestrm64_xmm_xmmm128_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_3, xmm0, code[nameof(Code.VEX_Vpcmpestri_xmm_xmmm128_imm8)], code[nameof(Code.VEX_Vpcmpestri64_xmm_xmmm128_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpcmpistrm_xmm_xmmm128_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpcmpistri_xmm_xmmm128_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 68
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmaddps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmaddps_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmaddps_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmaddps_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmaddpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmaddpd_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmaddpd_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmaddpd_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmaddss_xmm_xmm_xmmm32_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmaddss_xmm_xmm_xmm_xmmm32)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmaddsd_xmm_xmm_xmmm64_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmaddsd_xmm_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmsubps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmsubps_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmsubps_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmsubps_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmsubpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfmsubpd_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmsubpd_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfmsubpd_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmsubss_xmm_xmm_xmmm32_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmsubss_xmm_xmm_xmm_xmmm32)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfmsubsd_xmm_xmm_xmmm64_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfmsubsd_xmm_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},

					// 70
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 78
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmaddps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfnmaddps_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmaddps_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfnmaddps_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmaddpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfnmaddpd_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmaddpd_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfnmaddpd_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmaddss_xmm_xmm_xmmm32_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmaddss_xmm_xmm_xmm_xmmm32)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmaddsd_xmm_xmm_xmmm64_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmaddsd_xmm_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmsubps_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfnmsubps_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmsubps_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfnmsubps_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VectorLength,
								new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmsubpd_xmm_xmm_xmmm128_xmm)] },
								new object[] { VHWIs4, ymm0, code[nameof(Code.VEX_Vfnmsubpd_ymm_ymm_ymmm256_ymm)] },
							},
							new object[] { VectorLength,
								new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmsubpd_xmm_xmm_xmm_xmmm128)] },
								new object[] { VHIs4W, ymm0, code[nameof(Code.VEX_Vfnmsubpd_ymm_ymm_ymm_ymmm256)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmsubss_xmm_xmm_xmmm32_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmsubss_xmm_xmm_xmm_xmmm32)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							new object[] { VHWIs4, xmm0, code[nameof(Code.VEX_Vfnmsubsd_xmm_xmm_xmmm64_xmm)] },
							new object[] { VHIs4W, xmm0, code[nameof(Code.VEX_Vfnmsubsd_xmm_xmm_xmm_xmmm64)] },
						},
						invalid,
						invalid,
					},

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 90
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 98
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							invalid,
							new object[] { VectorLength,
								new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vgf2p8affineqb_xmm_xmm_xmmm128_imm8)] },
								new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vgf2p8affineqb_ymm_ymm_ymmm256_imm8)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { W,
							invalid,
							new object[] { VectorLength,
								new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vgf2p8affineinvqb_xmm_xmm_xmmm128_imm8)] },
								new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vgf2p8affineinvqb_ymm_ymm_ymmm256_imm8)] },
							},
						},
						invalid,
						invalid,
					},

					// D0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vaeskeygenassist_xmm_xmmm128_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// E0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F0
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Gv_Ev_Ib, code[nameof(Code.VEX_Rorx_r32_rm32_imm8)], code[nameof(Code.VEX_Rorx_r64_rm64_imm8)] },
							invalid,
						},
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				(Handlers_MAP0,
				new object[0x100] {
					// 00
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 08
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 10
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 18
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 20
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 28
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 30
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 38
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 40
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 48
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 50
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 58
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 60
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 68
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 70
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { K_Jb, code[nameof(Code.VEX_KNC_Jkzd_kr_rel8_64)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { K_Jb, code[nameof(Code.VEX_KNC_Jknzd_kr_rel8_64)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					invalid,
					invalid,

					// 78
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 90
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 98
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// C8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// E8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// F8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
				}),

				(Handlers_0F,
				new object[0x100] {
					// 00
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 08
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 10
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovups_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovups_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovupd_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovupd_ymm_ymmm256)] },
						},
						new object[] { RM,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmovss_xmm_xmm_xmm)] },
							new object[] { VM, xmm0, code[nameof(Code.VEX_Vmovss_xmm_m32)] },
						},
						new object[] { RM,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmovsd_xmm_xmm_xmm)] },
							new object[] { VM, xmm0, code[nameof(Code.VEX_Vmovsd_xmm_m64)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovups_xmmm128_xmm)] },
							new object[] { WV, ymm0, code[nameof(Code.VEX_Vmovups_ymmm256_ymm)] },
						},
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovupd_xmmm128_xmm)] },
							new object[] { WV, ymm0, code[nameof(Code.VEX_Vmovupd_ymmm256_ymm)] },
						},
						new object[] { RM,
							new object[] { WHV, xmm0, code[nameof(Code.VEX_Vmovss_xmm_xmm_xmm_0F11)] },
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovss_m32_xmm)] },
						},
						new object[] { RM,
							new object[] { WHV, xmm0, code[nameof(Code.VEX_Vmovsd_xmm_xmm_xmm_0F11)] },
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovsd_m64_xmm)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_3, xmm0, code[nameof(Code.VEX_Vmovhlps_xmm_xmm_xmm)], code[nameof(Code.VEX_Vmovlps_xmm_xmm_m64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { VHM, xmm0, code[nameof(Code.VEX_Vmovlpd_xmm_xmm_m64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovsldup_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovsldup_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovddup_xmm_xmmm64)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovddup_ymm_ymmm256)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovlps_m64_xmm)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovlpd_m64_xmm)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vunpcklps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vunpcklps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vunpcklpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vunpcklpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vunpckhps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vunpckhps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vunpckhpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vunpckhpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_3, xmm0, code[nameof(Code.VEX_Vmovlhps_xmm_xmm_xmm)], code[nameof(Code.VEX_Vmovhps_xmm_xmm_m64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { VHM, xmm0, code[nameof(Code.VEX_Vmovhpd_xmm_xmm_m64)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovshdup_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovshdup_ymm_ymmm256)] },
						},
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovhps_m64_xmm)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovhpd_m64_xmm)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// 18
					new object[] { Group, "handlers_Grp_0F18" },
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 20
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 28
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovaps_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovaps_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovapd_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovapd_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovaps_xmmm128_xmm)] },
							new object[] { WV, ymm0, code[nameof(Code.VEX_Vmovaps_ymmm256_ymm)] },
						},
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovapd_xmmm128_xmm)] },
							new object[] { WV, ymm0, code[nameof(Code.VEX_Vmovapd_ymmm256_ymm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VHEv, xmm0, code[nameof(Code.VEX_Vcvtsi2ss_xmm_xmm_rm32)], code[nameof(Code.VEX_Vcvtsi2ss_xmm_xmm_rm64)] },
						new object[] { VHEv, xmm0, code[nameof(Code.VEX_Vcvtsi2sd_xmm_xmm_rm32)], code[nameof(Code.VEX_Vcvtsi2sd_xmm_xmm_rm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovntps_m128_xmm)] },
							new object[] { MV, ymm0, code[nameof(Code.VEX_Vmovntps_m256_ymm)] },
						},
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovntpd_m128_xmm)] },
							new object[] { MV, ymm0, code[nameof(Code.VEX_Vmovntpd_m256_ymm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { Gv_W, xmm0, code[nameof(Code.VEX_Vcvttss2si_r32_xmmm32)], code[nameof(Code.VEX_Vcvttss2si_r64_xmmm32)] },
						new object[] { Gv_W, xmm0, code[nameof(Code.VEX_Vcvttsd2si_r32_xmmm64)], code[nameof(Code.VEX_Vcvttsd2si_r64_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { Gv_W, xmm0, code[nameof(Code.VEX_Vcvtss2si_r32_xmmm32)], code[nameof(Code.VEX_Vcvtss2si_r64_xmmm32)] },
						new object[] { Gv_W, xmm0, code[nameof(Code.VEX_Vcvtsd2si_r32_xmmm64)], code[nameof(Code.VEX_Vcvtsd2si_r64_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vucomiss_xmm_xmmm32)] },
						new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vucomisd_xmm_xmmm64)] },
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcomiss_xmm_xmmm32)] },
						new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcomisd_xmm_xmmm64)] },
						invalid,
						invalid,
					},

					// 30
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 38
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 40
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kand_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandw_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandb_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandd_kr_kr_kr)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kandn_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandnw_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandnq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandnb_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kandnd_kr_kr_kr)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kandnr_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									new object[] { VK_RK, code[nameof(Code.VEX_Knotw_kr_kr)] },
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Knot_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								new object[] { VK_RK, code[nameof(Code.VEX_Knotq_kr_kr)] },
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK, code[nameof(Code.VEX_Knotb_kr_kr)] },
								new object[] { VK_RK, code[nameof(Code.VEX_Knotd_kr_kr)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kor_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Korw_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Korq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Korb_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kord_kr_kr_kr)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kxnor_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxnorw_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxnorq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxnorb_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxnord_kr_kr_kr)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kxor_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxorw_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxorq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxorb_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kxord_kr_kr_kr)] },
							},
						},
						invalid,
						invalid,
					},

					// 48
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kmerge2l1h_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kmerge2l1l_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kaddw_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kaddq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kaddb_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kaddd_kr_kr_kr)] },
							},
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kunpckwd_kr_kr_kr)] },
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kunpckdq_kr_kr_kr)] },
							},
						},
						new object[] { VectorLength,
							invalid,
							new object[] { W,
								new object[] { VK_HK_RK, code[nameof(Code.VEX_Kunpckbw_kr_kr_kr)] },
								invalid,
							},
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,

					// 50
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { Gv_RX, xmm0, code[nameof(Code.VEX_Vmovmskps_r32_xmm)], code[nameof(Code.VEX_Vmovmskps_r64_xmm)] },
							new object[] { Gv_RX, ymm0, code[nameof(Code.VEX_Vmovmskps_r32_ymm)], code[nameof(Code.VEX_Vmovmskps_r64_ymm)] },
						},
						new object[] { VectorLength,
							new object[] { Gv_RX, xmm0, code[nameof(Code.VEX_Vmovmskpd_r32_xmm)], code[nameof(Code.VEX_Vmovmskpd_r64_xmm)] },
							new object[] { Gv_RX, ymm0, code[nameof(Code.VEX_Vmovmskpd_r32_ymm)], code[nameof(Code.VEX_Vmovmskpd_r64_ymm)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vsqrtps_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vsqrtps_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vsqrtpd_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vsqrtpd_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vsqrtss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vsqrtsd_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vrsqrtps_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vrsqrtps_ymm_ymmm256)] },
						},
						invalid,
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vrsqrtss_xmm_xmm_xmmm32)] },
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vrcpps_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vrcpps_ymm_ymmm256)] },
						},
						invalid,
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vrcpss_xmm_xmm_xmmm32)] },
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vandps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vandps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vandpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vandpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vandnps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vandnps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vandnpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vandnpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vorps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vorps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vorpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vorpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vxorps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vxorps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vxorpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vxorpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// 58
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaddps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaddps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaddpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaddpd_ymm_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaddss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaddsd_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmulps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vmulps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmulpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vmulpd_ymm_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmulss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmulsd_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvtps2pd_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vcvtps2pd_ymm_xmmm128)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvtpd2ps_xmm_xmmm128)] },
							new object[] { VW_3, xmm0, ymm0, code[nameof(Code.VEX_Vcvtpd2ps_xmm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vcvtss2sd_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vcvtsd2ss_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvtdq2ps_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vcvtdq2ps_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvtps2dq_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vcvtps2dq_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvttps2dq_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vcvttps2dq_ymm_ymmm256)] },
						},
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vsubps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vsubps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vsubpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vsubpd_ymm_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vsubss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vsubsd_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vminps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vminps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vminpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vminpd_ymm_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vminss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vminsd_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vdivps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vdivps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vdivpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vdivpd_ymm_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vdivss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vdivsd_xmm_xmm_xmmm64)] },
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmaxps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vmaxps_ymm_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmaxpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vmaxpd_ymm_ymm_ymmm256)] },
						},
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmaxss_xmm_xmm_xmmm32)] },
						new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vmaxsd_xmm_xmm_xmmm64)] },
					},

					// 60
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpcklbw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpcklbw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpcklwd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpcklwd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpckldq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpckldq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpacksswb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpacksswb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpgtb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpgtb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpgtw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpgtw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpgtd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpgtd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpackuswb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpackuswb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// 68
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpckhbw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpckhbw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpckhwd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpckhwd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpckhdq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpckhdq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpackssdw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpackssdw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpcklqdq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpcklqdq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpunpckhqdq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpunpckhqdq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VX_Ev, code[nameof(Code.VEX_Vmovd_xmm_rm32)], code[nameof(Code.VEX_Vmovq_xmm_rm64)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovdqa_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovdqa_ymm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovdqu_xmm_xmmm128)] },
							new object[] { VW_2, ymm0, code[nameof(Code.VEX_Vmovdqu_ymm_ymmm256)] },
						},
						invalid,
					},

					// 70
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpshufd_xmm_xmmm128_imm8)] },
							new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpshufd_ymm_ymmm256_imm8)] },
						},
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpshufhw_xmm_xmmm128_imm8)] },
							new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpshufhw_ymm_ymmm256_imm8)] },
						},
						new object[] { VectorLength,
							new object[] { VWIb_2, xmm0, code[nameof(Code.VEX_Vpshuflw_xmm_xmmm128_imm8)] },
							new object[] { VWIb_2, ymm0, code[nameof(Code.VEX_Vpshuflw_ymm_ymmm256_imm8)] },
						},
					},
					new object[] { Group, "handlers_Grp_0F71" },
					new object[] { Group, "handlers_Grp_0F72" },
					new object[] { Group, "handlers_Grp_0F73" },
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpeqb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpeqb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpeqw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpeqw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpcmpeqd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpcmpeqd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_NoModRM,
						new object[] { VectorLength_NoModRM,
							new object[] { Simple, code[nameof(Code.VEX_Vzeroupper)] },
							new object[] { Simple, code[nameof(Code.VEX_Vzeroall)] },
						},
						invalid_NoModRM,
						invalid_NoModRM,
						invalid_NoModRM,
					},

					// 78
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vhaddpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vhaddpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vhaddps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vhaddps_ymm_ymm_ymmm256)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vhsubpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vhsubpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vhsubps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vhsubps_ymm_ymm_ymmm256)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { Ev_VX, code[nameof(Code.VEX_Vmovd_rm32_xmm)], code[nameof(Code.VEX_Vmovq_rm64_xmm)] },
							invalid,
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vmovq_xmm_xmmm64)] },
							invalid,
						},
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovdqa_xmmm128_xmm)] },
							new object[] { WV, ymm0, code[nameof(Code.VEX_Vmovdqa_ymmm256_ymm)] },
						},
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovdqu_xmmm128_xmm)] },
							new object[] { WV, ymm0, code[nameof(Code.VEX_Vmovdqu_ymmm256_ymm)] },
						},
						invalid,
					},

					// 80
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { K_Jz, code[nameof(Code.VEX_KNC_Jkzd_kr_rel32_64)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { K_Jz, code[nameof(Code.VEX_KNC_Jknzd_kr_rel32_64)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					invalid,
					invalid,

					// 88
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// 90
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									new object[] { VK_WK, code[nameof(Code.VEX_Kmovw_kr_km16)] },
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kmov_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								new object[] { VK_WK, code[nameof(Code.VEX_Kmovq_kr_km64)] },
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_WK, code[nameof(Code.VEX_Kmovb_kr_km8)] },
								new object[] { VK_WK, code[nameof(Code.VEX_Kmovd_kr_km32)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { M_VK, code[nameof(Code.VEX_Kmovw_m16_kr)] },
								new object[] { M_VK, code[nameof(Code.VEX_Kmovq_m64_kr)] },
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { M_VK, code[nameof(Code.VEX_Kmovb_m8_kr)] },
								new object[] { M_VK, code[nameof(Code.VEX_Kmovd_m32_kr)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									new object[] { VK_R, code[nameof(Code.VEX_Kmovw_kr_r32)], eax },
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_R, code[nameof(Code.VEX_KNC_Kmov_kr_r32)], eax },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_R, code[nameof(Code.VEX_Kmovb_kr_r32)], eax },
								invalid,
							},
							invalid,
						},
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_R, code[nameof(Code.VEX_Kmovd_kr_r32)], eax },
								new object[] { Bitness_DontReadModRM,
									new object[] { VK_R, code[nameof(Code.VEX_Kmovd_kr_r32)], eax },
									new object[] { VK_R, code[nameof(Code.VEX_Kmovq_kr_r64)], rax },
								},
							},
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									new object[] { G_VK, code[nameof(Code.VEX_Kmovw_r32_kr)], eax },
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { G_VK, code[nameof(Code.VEX_KNC_Kmov_r32_kr)], eax },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { G_VK, code[nameof(Code.VEX_Kmovb_r32_kr)], eax },
								invalid,
							},
							invalid,
						},
						invalid,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { G_VK, code[nameof(Code.VEX_Kmovd_r32_kr)], eax },
								new object[] { Bitness_DontReadModRM,
									new object[] { G_VK, code[nameof(Code.VEX_Kmovd_r32_kr)], eax },
									new object[] { G_VK, code[nameof(Code.VEX_Kmovq_r64_kr)], rax },
								},
							},
							invalid,
						},
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { Gq_HK_RK, code[nameof(Code.VEX_KNC_Kconcath_r64_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									invalid,
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { Gq_HK_RK, code[nameof(Code.VEX_KNC_Kconcatl_r64_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								invalid,
							},
							invalid,
						},
						invalid,
						invalid,
						invalid,
					},

					// 98
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { Options_DontReadModRM,
									new object[] { VK_RK, code[nameof(Code.VEX_Kortestw_kr_kr)] },
									new object[] { Bitness_DontReadModRM,
										invalid,
										new object[] { VK_RK, code[nameof(Code.VEX_KNC_Kortest_kr_kr)] },
									}, options[nameof(DecoderOptions.KNC)]
								},
								new object[] { VK_RK, code[nameof(Code.VEX_Kortestq_kr_kr)] },
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK, code[nameof(Code.VEX_Kortestb_kr_kr)] },
								new object[] { VK_RK, code[nameof(Code.VEX_Kortestd_kr_kr)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK, code[nameof(Code.VEX_Ktestw_kr_kr)] },
								new object[] { VK_RK, code[nameof(Code.VEX_Ktestq_kr_kr)] },
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { W,
								new object[] { VK_RK, code[nameof(Code.VEX_Ktestb_kr_kr)] },
								new object[] { VK_RK, code[nameof(Code.VEX_Ktestd_kr_kr)] },
							},
							invalid,
						},
						invalid,
						invalid,
					},
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// A8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					new object[] { Group, "handlers_Grp_0FAE" },
					invalid,

					// B0
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// B8
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { RM,
										new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Popcnt_r32_r32)], code[nameof(Code.VEX_KNC_Popcnt_r64_r64)] },
										invalid,
									},
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
					},
					invalid,
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { RM,
										new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Tzcnt_r32_r32)], code[nameof(Code.VEX_KNC_Tzcnt_r64_r64)] },
										invalid,
									},
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { RM,
										new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Tzcnti_r32_r32)], code[nameof(Code.VEX_KNC_Tzcnti_r64_r64)] },
										invalid,
									},
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { Options_DontReadModRM,
								invalid,
								new object[] { Bitness_DontReadModRM,
									invalid,
									new object[] { RM,
										new object[] { Gv_Ev, code[nameof(Code.VEX_KNC_Lzcnt_r32_r32)], code[nameof(Code.VEX_KNC_Lzcnt_r64_r64)] },
										invalid,
									},
								}, options[nameof(DecoderOptions.KNC)]
							},
							invalid,
						},
						invalid,
					},
					invalid,
					invalid,

					// C0
					invalid,
					invalid,
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vcmpps_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vcmpps_ymm_ymm_ymmm256_imm8)] },
						},
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vcmppd_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vcmppd_ymm_ymm_ymmm256_imm8)] },
						},
						new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vcmpss_xmm_xmm_xmmm32_imm8)] },
						new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vcmpsd_xmm_xmm_xmmm64_imm8)] },
					},
					invalid,
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHEvIb, xmm0, code[nameof(Code.VEX_Vpinsrw_xmm_xmm_r32m16_imm8)], code[nameof(Code.VEX_Vpinsrw_xmm_xmm_r64m16_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { Gv_GPR_Ib, xmm0, code[nameof(Code.VEX_Vpextrw_r32_xmm_imm8)], code[nameof(Code.VEX_Vpextrw_r64_xmm_imm8)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vshufps_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vshufps_ymm_ymm_ymmm256_imm8)] },
						},
						new object[] { VectorLength,
							new object[] { VHWIb_2, xmm0, code[nameof(Code.VEX_Vshufpd_xmm_xmm_xmmm128_imm8)] },
							new object[] { VHWIb_2, ymm0, code[nameof(Code.VEX_Vshufpd_ymm_ymm_ymmm256_imm8)] },
						},
						invalid,
						invalid,
					},
					invalid,

					// C8
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,
					invalid,

					// D0
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaddsubpd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaddsubpd_ymm_ymm_ymmm256)] },
						},
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vaddsubps_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vaddsubps_ymm_ymm_ymmm256)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsrlw_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsrlw_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsrld_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsrld_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsrlq_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsrlq_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmullw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmullw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { WV, xmm0, code[nameof(Code.VEX_Vmovq_xmmm64_xmm)] },
							invalid,
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { Gv_RX, xmm0, code[nameof(Code.VEX_Vpmovmskb_r32_xmm)], code[nameof(Code.VEX_Vpmovmskb_r64_xmm)] },
							new object[] { Gv_RX, ymm0, code[nameof(Code.VEX_Vpmovmskb_r32_ymm)], code[nameof(Code.VEX_Vpmovmskb_r64_ymm)] },
						},
						invalid,
						invalid,
					},

					// D8
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubusb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubusb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubusw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubusw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpminub_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpminub_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpand_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpand_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddusb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddusb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddusw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddusw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaxub_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaxub_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpandn_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpandn_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// E0
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpavgb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpavgb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsraw_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsraw_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsrad_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsrad_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpavgw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpavgw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmulhuw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmulhuw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmulhw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmulhw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvttpd2dq_xmm_xmmm128)] },
							new object[] { VW_3, xmm0, ymm0, code[nameof(Code.VEX_Vcvttpd2dq_xmm_ymmm256)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvtdq2pd_xmm_xmmm64)] },
							new object[] { VW_3, ymm0, xmm0, code[nameof(Code.VEX_Vcvtdq2pd_ymm_xmmm128)] },
						},
						new object[] { VectorLength,
							new object[] { VW_2, xmm0, code[nameof(Code.VEX_Vcvtpd2dq_xmm_xmmm128)] },
							new object[] { VW_3, xmm0, ymm0, code[nameof(Code.VEX_Vcvtpd2dq_xmm_ymmm256)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { MV, xmm0, code[nameof(Code.VEX_Vmovntdq_m128_xmm)] },
							new object[] { MV, ymm0, code[nameof(Code.VEX_Vmovntdq_m256_ymm)] },
						},
						invalid,
						invalid,
					},

					// E8
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubsb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubsb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpminsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpminsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpor_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpor_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddsb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddsb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaxsw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaxsw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpxor_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpxor_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},

					// F0
					new object[] { MandatoryPrefix2_4,
						invalid,
						invalid,
						invalid,
						new object[] { VectorLength,
							new object[] { VM, xmm0, code[nameof(Code.VEX_Vlddqu_xmm_m128)] },
							new object[] { VM, ymm0, code[nameof(Code.VEX_Vlddqu_ymm_m256)] },
						},
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsllw_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsllw_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpslld_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpslld_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_4, xmm0, xmm0, xmm0, code[nameof(Code.VEX_Vpsllq_xmm_xmm_xmmm128)] },
							new object[] { VHW_4, ymm0, ymm0, xmm0, code[nameof(Code.VEX_Vpsllq_ymm_ymm_xmmm128)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmuludq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmuludq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpmaddwd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpmaddwd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsadbw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsadbw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { rDI_VX_RX, xmm0, code[nameof(Code.VEX_Vmaskmovdqu_rDI_xmm_xmm)] },
							invalid,
						},
						invalid,
						invalid,
					},

					// F8
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpsubq_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpsubq_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddb_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddb_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddw_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddw_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					new object[] { MandatoryPrefix2_4,
						invalid,
						new object[] { VectorLength,
							new object[] { VHW_2, xmm0, code[nameof(Code.VEX_Vpaddd_xmm_xmm_xmmm128)] },
							new object[] { VHW_2, ymm0, code[nameof(Code.VEX_Vpaddd_ymm_ymm_ymmm256)] },
						},
						invalid,
						invalid,
					},
					invalid,
				}),
			};
			return handlers;
		}
	}
}
